package interactions;

import java.util.Map;

import sprite.Sprite;
import interactions.Reaction;

/**
 * This is the interface for all Sprite interactions.
 * 
 * @author Seon Kang
 * @author Guy Tracy
 */
public interface Interaction {
    /**
     * Interactions take two Sprites and then acts on them depending on what their interaction is.
     * 
     * 
     * @param s1 
     * @param s2 
     */
    void doStrategyAction(Sprite s1, Sprite s2);
    /**
     * Checks to see if Sprites are actually interacting.
     * 
     * Also checks if s1 and s2 are the right types of Sprite in order to determine
     * whether or not to perform the action.
     * 
     * @param s1 
     * @param s2 
     * @return
     */
    boolean isInteracting(Sprite s1, Sprite s2);

    /**
     * Adds entire reaction map to interactions reaction map
     * @param myReactMap is the map of reactions with SpriteTypePairs as keys
     */
    void registerMultipleReactions (Map<SpritesTypePair, Reaction> myReactMap);
}
